package com.ruoyi.order.mapper;

import com.ruoyi.order.domain.VerOrderItem;
import com.ruoyi.order.domain.dto.VerOrderItemDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
 * 订单项Mapper接口
 *
 * @author ruoyi
 * @date 2025-08-21
 */
@Mapper
public interface VerOrderItemMapper {
    /**
     * 查询订单项
     *
     * @param id 订单项主键
     * @return 订单项
     */
    public VerOrderItem selectVerOrderItemById(Long id);

    /**
     * 查询订单项列表
     *
     * @param verOrderItem 订单项
     * @return 订单项集合
     */
    public List<VerOrderItem> selectVerOrderItemList(VerOrderItem verOrderItem);

    /**
     * 新增订单项
     *
     * @param verOrderItem 订单项
     * @return 结果
     */
    public int insertVerOrderItem(VerOrderItem verOrderItem);

    /**
     * 修改订单项
     *
     * @param verOrderItem 订单项
     * @return 结果
     */
    public int updateVerOrderItem(VerOrderItem verOrderItem);

    /**
     * 删除订单项
     *
     * @param id 订单项主键
     * @return 结果
     */
    public int deleteVerOrderItemById(Long id);

    /**
     * 批量删除订单项
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteVerOrderItemByIds(Long[] ids);

    /**
     * 查询订单项最大ID
     *
     * @return 订单项最大ID
     */
    public Long selectMaxId();

    /**
     * 滚动分页查询订单项列表
     *
     * @param cursor         游标ID
     * @param pageSize       页面大小
     * @param orderBy        排序字段
     * @param orderDirection 排序方向
     * @param orderId        订单ID
     * @param skuId          商品SKU ID
     * @return 订单项集合
     */
    public List<VerOrderItem> selectVerOrderItemListByScroll(
            Long cursor,
            Integer pageSize,
            String orderBy,
            String orderDirection,
            Long orderId,
            Long skuId);

    /**
     * 根据订单ID查询订单项列表
     *
     * @param orderId 订单ID
     * @return 订单项列表
     */
    List<VerOrderItemDto> selectVerOrderItemByOrderId(Long orderId);


    @Update("update ver_order_item set is_reviewed = #{isReviewed} where id = #{orderItemId}")
    int updateOrderItemStatus(Long orderItemId, Integer isReviewed);
}
